package com.ep.general.instruktor.kartypracy.db;

import java.util.Date;

import com.ep.general.instruktor.Instruktor;
import com.ep.general.instruktor.kartypracy.StatusKartyPracy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;

public class KartaPracy {

	@Expose
	private int id;
	@Expose
	private Date data;
	@Expose
	private float godzinyJazdy;
	@Expose
	private float godzinyWykladow;
	@Expose
	private float godzinyPozostale;
	@Expose
	private StatusKartyPracy statusKarty;
	private Instruktor instruktor;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Instruktor getInstruktor() {
		return instruktor;
	}

	public void setInstruktor(Instruktor instruktor) {
		this.instruktor = instruktor;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public float getGodzinyJazdy() {
		return godzinyJazdy;
	}

	public void setGodzinyJazdy(float godzinyJazdy) {
		this.godzinyJazdy = godzinyJazdy;
	}

	public float getGodzinyWykladow() {
		return godzinyWykladow;
	}

	public void setGodzinyWykladow(float godzinyWykladow) {
		this.godzinyWykladow = godzinyWykladow;
	}

	public float getGodzinyPozostale() {
		return godzinyPozostale;
	}

	public void setGodzinyPozostale(float godzinyPozostale) {
		this.godzinyPozostale = godzinyPozostale;
	}

	public StatusKartyPracy getStatusKarty() {
		return statusKarty;
	}

	public void setStatusKarty(StatusKartyPracy statusKarty) {
		this.statusKarty = statusKarty;
	}

	public boolean compareAndCopy(KartaPracy item) {
		boolean copy = false;

		if (item == null) {
			return copy;
		}

		if (item.getData() != null && !this.data.equals(item.getData())) {
			this.data = item.getData();
			copy = true;
		}

		if (this.godzinyJazdy != item.getGodzinyJazdy()) {
			this.godzinyJazdy = item.getGodzinyJazdy();
			copy = true;
		}

		if (this.godzinyWykladow != item.getGodzinyWykladow()) {
			this.godzinyWykladow = item.getGodzinyWykladow();
			copy = true;
		}

		if (this.godzinyPozostale != item.getGodzinyPozostale()) {
			this.godzinyPozostale = item.getGodzinyPozostale();
			copy = true;
		}

		if (this.statusKarty.getId() != item.getStatusKarty().getId()) {
			this.statusKarty = item.getStatusKarty();
			copy = true;
		}

		if (this.instruktor.getId() != item.getInstruktor().getId()) {
			this.instruktor = item.getInstruktor();
			copy = true;
		}

		return copy;
	}

	public String getAsJson() {
		GsonBuilder gsonBuilder = new GsonBuilder();
		gsonBuilder.excludeFieldsWithoutExposeAnnotation()
				.setDateFormat("dd-MM-yyyy").create();
		Gson gson = gsonBuilder.create();

		return gson.toJson(this);
	}
}
